#include "cabecera.h"


struct trabajo generaElemento(int login, char* nombre){
	struct trabajo aux;
	aux.login = login;
	strcpy(aux.nombre, nombre);
	return aux;
}

void insertaCola(struct nodo ** cola, struct trabajo elemento){
	struct nodo* nuevo = NULL;
	nuevo = nuevoElemento();

	(*nuevo).elemento = elemento;
	(*nuevo).sig = *cola;
	*cola = nuevo;

}
struct trabajo sacaCola(struct nodo ** cola ){
	struct nodo* aux = NULL;
	struct nodo* ant = NULL;
	struct trabajo auxi;
	if((*(*cola)).sig == NULL){
		auxi = (*(*cola)).elemento;
		free(*cola);
		*cola = NULL;
		return auxi;
	}
	else{
		aux = *cola;
		while((*aux).sig != NULL){
			ant = aux;
			aux = (*aux).sig;
		}
		auxi = (*aux).elemento;
		free(aux);
		(*ant).sig = NULL;
		return auxi;
	}
}

int colaVacia(struct nodo * cola){
	if(cola == NULL){
		return 1;
	}
	return 0;
}

struct nodo * nuevoElemento (){
	return ((struct nodo*) malloc(sizeof(struct nodo)));
}

void imprimeCola(struct nodo** cola){
	struct nodo* aux = NULL;
	struct trabajo auxi;

	while(!colaVacia(*cola)){
		auxi = sacaCola(cola);
		insertaCola(&aux, auxi);
		printf("____________\n");
		printf("Login: %d\n", auxi.login);
		printf("Nombre: %s\n", auxi.nombre);
	}
	while(!colaVacia(aux)){
		auxi = sacaCola(&aux);
		insertaCola(cola,auxi);
	}
}

void imprimeTrabajo(struct trabajo lol){
	printf("\n\nLogin: %d\n", lol.login);
	printf("Nombre: %s\n\n", lol.nombre);
}

void imprimir(struct nodo** colaNormal, struct nodo** colaEspecial, int* k){
	struct trabajo aux;
	if(colaVacia(*colaEspecial)){
		aux = sacaCola(colaNormal);
		imprimeTrabajo(aux);
	}
	else{
		if(*k == 0){
			aux = sacaCola(colaNormal);
			imprimeTrabajo(aux);
			(*k) = 3;
		}
		else{
			aux = sacaCola(colaEspecial);
			imprimeTrabajo(aux);
			*k = *k - 1;
			printf("<%d>\n", *k);
		}
	}
}


